package com.tanhua.server.controller;

import com.tanhua.domain.db.UserInfo;
import com.tanhua.server.interceptor.UserHolder;
import com.tanhua.server.service.UserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.Map;

/**
 * 用户详情控制器
 */
@RestController
@RequestMapping("/users")
@Slf4j
public class UserInfoController {

    @Autowired
    private UserService userService;

    /**
     * 接口名称：用户资料 - 读取
     * 接口路径：GET/users
     */
    @GetMapping
    public ResponseEntity<Object> findUserInfoById() {
        log.info("接口名称：用户资料 - 读取");
        return userService.findUserInfoById();
    }

    /**
     * 接口名称：用户资料 - 保存
     * 接口路径：PUT/users
     */
    @PutMapping
    public ResponseEntity<Object> updateUserInfo(@RequestBody UserInfo userInfo) {
        log.info("接口名称：用户资料 - 保存");
        return userService.updateUserInfo(userInfo);
    }

    /**
     * 接口名称：互相喜欢，喜欢，粉丝 - 统计
     * 接口路径：GET/users/counts
     */
    @GetMapping("counts")
    public ResponseEntity<Object> queryCounts() {
        log.info("接口名称：互相喜欢，喜欢，粉丝 - 统计");
        return userService.queryCounts();
    }

    /**
     * 接口名称：互相喜欢、喜欢、粉丝、谁看过我 - 翻页列表
     * 接口路径：GET/users/friends/:type
     */
    @GetMapping("friends/{type}")
    public ResponseEntity<Object> queryUserLikeList(@PathVariable Integer type,
                                                    Integer page,
                                                    Integer pagesize) {

        log.info("接口名称：互相喜欢、喜欢、粉丝、谁看过我 - 翻页列表");
        return userService.queryUserLikeList(type, page, pagesize);
    }

    /**
     * 接口名称：粉丝 - 喜欢
     * 接口路径：POST/users/fans/:uid
     */
    @PostMapping("fans/{uid}")
    public ResponseEntity<Object> fansLike(@PathVariable Long uid) {
        log.info("接口名称：粉丝 - 喜欢");
        return userService.fansLike(uid);
    }

    /**
     * 接口名称：喜欢 - 取消
     * 接口路径：DELETE/users/like/:uid
     */
    @DeleteMapping("/like/{uid}")
    public ResponseEntity<Object> cancelLike(@PathVariable Long uid){
        return userService.cancelLike(uid);
    }

    /**
     * 接口名称：修改手机号- 1 发送短信验证码
     * 接口路径：POST/users/phone/sendVerificationCode
     */
    @PostMapping("/phone/sendVerificationCode")
    public ResponseEntity<Object> sendVerificationCode() {
        log.info("接口名称：修改手机号- 1 发送短信验证码");
        // 获取登录用户手机号码，发送验证码
        String phone = UserHolder.get().getMobile();
        // 复用登录第一步的方法
        return userService.login(phone);
    }

    /**
     * 接口名称：修改手机号 - 2 校验验证码
     * 接口路径：POST/users/phone/checkVerificationCode
     */
    @PostMapping("/phone/checkVerificationCode")
    public ResponseEntity<Object> checkVerificationCode(@RequestBody Map<String, String> map) {
        log.info("接口名称：修改手机号 - 2 校验验证码");
        String code = map.get("verificationCode");
        return userService.checkVerificationCode(code);
    }

    /**
     * 接口名称：修改手机号 - 3 保存
     * 接口路径：POST/users/phone
     */
    @PostMapping("/phone")
    public ResponseEntity<Object> phone(@RequestBody Map<String,String> map){
        String phone = map.get("phone");
        return userService.updateUserPhone(phone);
    }


}
